//*****************************************************************************
// JFab (http://code.google.com/p/jfab)
// Copyright (c) 2011 JFab.org
// Admin jfab@jeffreythompson.net
//
// See the file "LICENSE.txt" for information on usage and redistribution of
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
//*****************************************************************************

package org.jfab.core.builder;

/**
 * Defines methods required by a builder injector.
 */
public interface BuilderInjector
{
    /**
     * @return a new builder group.
     */
    BuilderGroup injectBuilderGroup();

    /**
     * @return a new converter code generator class builder.
     */
    ConverterCGClassBuilder injectConverterCGClassBuilder();

    /**
     * @return a new decorator code generator class builder.
     */
    DecoratorCGClassBuilder injectDecoratorCGClassBuilder();

    /**
     * @return a new JUnit test code generator class builder.
     */
    JUnitTestCGClassBuilder injectJUnitTestCGClassBuilder();

    /**
     * @return a new simulated data code generator class builder.
     */
    SimulatedDataCGClassBuilder injectSimulatedDataCGClassBuilder();
}
